杨辉三角
左对齐 方法1 
int main()
{
	int arr[7][7] = { 0 };
	for (int i = 0; i < 7; i++)
	{
		for(int k=0;k<=)
		for (int j = 0; j <= i; j++)
		{
			if (j == 0)//第一列的元素都是1
			{
				
				arr[i][j] = 1;
			}
			if (j == i)//行列相等时，输出1
			{
				arr[i][j] = 1;
			}
			if ((i >= 2) && (j >= 1))//元素是上一行对应两位置的元素之和
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

//左对齐 方法2
int main()
{
	int a[7][7] = { 1 }; //第一行直接填好，播下种子

	int i, j;

	for (i = 1; i < 7; i++) //从第二行开始填
	{
		a[i][0] = 1; //每行的第一列都没有区别，直接给1，保证不会越界。
		for (j = 1; j <= i; j++) //从第二列开始填
		{
			a[i][j] = a[i - 1][j] + a[i - 1][j - 1]; //递推方程
		}
	}

	for (i = 0; i < 7; i++) //填完打印
	{
		for (j = 0; j <= i; j++)
		{
			printf("%d ", a[i][j]);
		}
		putchar('\n');
	}
}


中间对齐 
int main()
{
	int arr[7][7] = { 0 };
	for (int i = 0; i < 7; i++)
	{
		for (int k = 0; k < 7-i-1;k++ )
		{
			printf(" ");
		}
		for (int j = 0; j <= i; j++)
		{
			if (j == 0)//第一列的元素都是1
			{

				arr[i][j] = 1;
			}
			if (j == i)//行列相等时，输出1
			{
				arr[i][j] = 1;
			}
			if ((i >= 2) && (j >= 1))//元素是上一行对应两位置的元素之和
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
			printf("%d ", arr[i][j]);
		}
		printf("\n");	
	}
	return 0;
}

右对齐 
int main()
{
	int arr[7][7] = { 0 };
	for (int i = 0; i < 7; i++)
	{
		if (i>=0 && i < 5)
		{
			for (int k = 0; k < 15 - 2 * i; k++)
			{
				printf(" ");
			}
		}
		if (i >= 5 && i < 6)
		{
			for (int k = 0; k < 15 - 2 * i-2; k++)
			{
				printf(" ");
			}
		}
		
		for (int j = 0; j <= i; j++)
		{
			if (j == 0)//第一列的元素都是1
			{

				arr[i][j] = 1;
			}
			if (j == i)//行列相等时，输出1
			{
				arr[i][j] = 1;
			}
			if ((i >= 2) && (j >= 1))//元素是上一行对应两位置的元素之和
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}
//改进1
int main()
{
	int a[7] = { 1 };

	int i, j;
	printf("1\n"); //第一行就直接打印
	for (i = 1; i < 7; i++) //从第二行开始
	{
		for (j = i; j > 0; j--) //从后向前，避免上一行的数据在使用前就被覆盖
		{
			a[j] += a[j - 1]; //公式同上
		}

		for (j = 0; j <= i; j++) //这一行直接打印
		{
			printf("%d ", a[j]);
		}
		putchar('\n');
	}
}
//这种方法虽然降低了空间复杂度，但只能保存最后一行的数据，不利于反复查询，
//两个填法各有各的适用场景。就本题而言，改进后的胜出。